package ai.people.core.feign.config;

import ai.people.core.feign.ribbon.LocalLoadBalancerRule;
import com.netflix.loadbalancer.IRule;
import feign.Logger;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

/**
 * @author yuanqinglong
 * @date 2022/1/25 17:04
 */
@Configuration
public class FeignConfig {


    /**
     * 日志级别
     * NONE【性能最佳，适用于生产】：不记录任何日志（默认值）。
     * BASIC【适用于生产环境追踪问题】：仅记录请求方法、URL、响应状态代码以及执行时间。
     * HEADERS：记录BASIC级别的基础上，记录请求和响应的header。
     * FULL【比较适用于开发及测试环境定位问题】：记录请求和响应的header、body和元数据
     */
    @Bean
    @Profile({"local","dev"})
    public Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }


    @Bean
    @ConditionalOnExpression("#{{'Mac OS X','Windows 10','Windows 11'}.contains(systemProperties['os.name'])}")
    public IRule localLoadBalancerRule() {
        return new LocalLoadBalancerRule();
    }




}
